import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import * as path from "path";
import UnoCSS from 'unocss/vite'

const Timestamp = new Date().getTime();
// https://vitejs.dev/config/
export default defineConfig({
  /** 打包时根据实际情况修改 base */
  base: '/',
  // 配置别名
  resolve: {
    //设置别名
    alias: {
      "@": path.resolve(__dirname, "src"),
    },
  },
  server: {
    /** 设置 host: true 才可以使用 Network 的形式，以 IP 访问项目 */
    host: true, // host: "0.0.0.0"
    /** 端口号 */
    port: 8888,
    /** 是否自动打开浏览器 */
    open: false,
    /** 跨域设置允许 */
    cors: true,
    /** 端口被占用时，是否直接退出 */
    strictPort: false,
    /** 接口代理 */
    proxy: {
      "/api": { 
        // easy mock 模拟接口数据 用户名：test@123 密码： test@123
        // https://mock.mengxuegu.com/project/66600b69dd1b6c04442d5474 
        target: " https://mock.mengxuegu.com/mock/66600b69dd1b6c04442d5474", 
        ws: true,
        /** 是否允许跨域 */
        changeOrigin: true,
        rewrite: (path) => path.replace(/^\/api/, '')
      },
    },
    /** 预热常用文件，提高初始页面加载速度 */
    // warmup: {
    //   clientFiles: ["./src/layouts/**/*.vue"]
    // }
  },
  build: {
    /** 单个 chunk 文件的大小超过 2048KB 时发出警告 */
    chunkSizeWarningLimit: 2048,
    /** 禁用 gzip 压缩大小报告 */
    reportCompressedSize: false,
    /** 打包后静态资源目录 */
    assetsDir: "static",
    rollupOptions: {
      output: {
        // 打包文件加上时间戳，避免缓存
        entryFileNames: `assets/[name].[hash].${Timestamp}.js`,
        chunkFileNames: `assets/[name].[hash].${Timestamp}.js`,
        assetFileNames: `assets/[name].[hash].${Timestamp}.[ext]`,
      }
    }
  },
  /** 混淆器 */
  esbuild: {
    /** 打包时移除 console.log */
    pure: ["console.log"],
    /** 打包时移除 debugger */
    drop: ["debugger"],
    /** 打包时移除所有注释 */
    legalComments: "none"
  },
  plugins: [vue(), UnoCSS()],
  // scss mixins 需要引用才能使用
  css: {
    preprocessorOptions: {
      // 导入scss预编译程序
      scss: {
        additionalData: `@use "@/style/mixins.scss" as *;`,
      },
    }
  },
})
